package cn.xinfei.xdecision.common.model.datax.datamanage;

import cn.xinfei.xdecision.common.model.common.BasePage;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.io.Serializable;

@Data
//@TableName("t_field")
@TableName("t_variable")
public class Field extends BasePage implements Serializable {
    private static final long serialVersionUID = 7113453776727511877L;

    /**
     * 主键
     */
    @JSONField(serialize = false)
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 字段英文名
     */
    @TableField("var_code")
    private String fieldCode;

    /**
     * 字段中文名
     */
    @TableField("var_name")
    private String fieldName;

    /**
     * 变量类型编号,来源t_var_type表主键
     */
    @TableField("var_type")
    private String varTypeId;

    /**
     * 字段存值类型
     * 变量存值类型,待选(0),integer(1),string(2),boolean(3),double(4)
     */
    @TableField("value_type")
    private Integer valueType;


    @TableField("is_inner")
    private int isInner;
    /**
     * 是否输入变量
     */
    @TableField("is_input")
    private int isInput;

    /**
     * 是否输出字段
     */
    @TableField("is_output")
    private int isOutput;


    /**
     * 是否组织定义的通用字段
     */
    @TableField("is_common")
    private Integer isCommon;



    /**
     * 变量状态  (新建,运行中,下线,删除)标志，运行中:2，新建:1，下线:0，删除:-1，默认运行中
     */
    @TableField("status")
    private Integer status;
    /**
     * 该变量归属的组织编号
     */
    @TableField("organ_id")
    private Long organId;

    @TableField("var_default_value")
    private String varDefaultValue;

    @TableField("const_value")
    private String constValue;

    @TableField("is_deleted")
    private String isDeleted;

    /**
     * 1输ru
     * 2过程
     * 3输出
     */
    public int getStage() {
        if (isInput == 1) {
            return 1;
        }
        if (isInner == 1) {
            return 2;
        }
        if (isOutput == 1) {
            return 3;
        }
//        log.error("getState error. field={}", this);
        return 0;
    }
}
